import piece.PieceType;
import piece.Pion;
import core.Coordonnees;
import echiquier.Echiquier;

/**
 * 
 */

/**
 * @author baptiste.andrini
 *
 */
public class Tests {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Echiquier echiquier = new Echiquier();
		
		System.out.print("\tTest : <PION - BLANC - DEPLACEMENT 2 CASES - OK ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(1, 2)).getPiece(), echiquier.getPlateau().get(new Coordonnees(1, 4)));
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		System.out.print("\ttest : <PION - NOIR - DEPLACEMENT 2 CASES - OK ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(2, 7)).getPiece(), echiquier.getPlateau().get(new Coordonnees(2, 5)));
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		System.out.println("\ttest : <PION - BLANC - MANGER ADVERSAIRE - OK ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(1, 4)).getPiece(), echiquier.getPlateau().get(new Coordonnees(2, 5)));
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		System.out.println("\ttest : <REINE - BLANCHE - TENTATIVE TRAVERSE PIECE - ERREUR OK ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(4, 1)).getPiece(), echiquier.getPlateau().get(new Coordonnees(3, 1)));
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		System.out.println("\ttest : <CAVALIER - NOIR - TENTATIVE TRAVERSE PIECE - OK ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(2, 8)).getPiece(), echiquier.getPlateau().get(new Coordonnees(3, 6)));
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		try{
			System.out.print("placement pion pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(7, 2)).getPiece(), echiquier.getPlateau().get(new Coordonnees(7, 4)));
			System.out.print("placement pion pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(7, 7)).getPiece(), echiquier.getPlateau().get(new Coordonnees(7, 5)));
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		System.out.println("\ttest : <FOU - BLANC - TENTATIVE MOUVEMENT - OK ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(6, 1)).getPiece(), echiquier.getPlateau().get(new Coordonnees(7, 2)));
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		try{
			System.out.print("placement pion pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(8, 7)).getPiece(), echiquier.getPlateau().get(new Coordonnees(8, 6)));
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		System.out.println("\ttest : <FOU - BLANC - TENTATIVE MANGER ENNEMI - OK ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(7, 2)).getPiece(), echiquier.getPlateau().get(new Coordonnees(3, 6)));
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		try{
			System.out.print("placement pion pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(4, 7)).getPiece(), echiquier.getPlateau().get(new Coordonnees(4, 5)));
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		System.out.println("\ttest : <ROI - BLANC - TENTATIVE DEPLACEMENT - OK ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(5, 1)).getPiece(), echiquier.getPlateau().get(new Coordonnees(6, 1)));
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		System.out.println("\ttest : <REINE - NOIR - TENTATIVE DEPLACEMENT - OK ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(4, 8)).getPiece(), echiquier.getPlateau().get(new Coordonnees(4, 6)));
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}
		
		try{
			System.out.print("placement pion pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(6, 2)).getPiece(), echiquier.getPlateau().get(new Coordonnees(6, 4)));
			System.out.print("placement pion pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(4, 6)).getPiece(), echiquier.getPlateau().get(new Coordonnees(5, 5)));
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}

		System.out.println("\ttest : <TENTATIVE DEPLACEMENT D'UNE PIECE NOIR AU TOUR DU BLANC- ECHEC ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(5, 5)).getPiece(), echiquier.getPlateau().get(new Coordonnees(4, 6)));
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.  -->   TEST VERIFIE");
		}
		
		System.out.println("\ttest : <TENTATIVE DEPLACEMENT D'UNE PIECE EN DEHORS DU PLATEAU - ECHEC ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(1, 1)).getPiece(), echiquier.getPlateau().get(new Coordonnees(1, 0)));
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.  -->   TEST VERIFIE");
		}
		
		
		System.out.println("\ttest : <TENTATIVE DEPLACEMENT CAVALIER - OK ?>");
		try{
			echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(7, 1)).getPiece(), echiquier.getPlateau().get(new Coordonnees(8, 3)));
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.  -->   TEST VERIFIE");
		}		
		
		try{
			System.out.print("placement "+echiquier.getJoueurCourant().toString()+" pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(6, 8)).getPiece(), echiquier.getPlateau().get(new Coordonnees(7, 7)));
			System.out.print("placement "+echiquier.getJoueurCourant().toString()+" pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(6, 4)).getPiece(), echiquier.getPlateau().get(new Coordonnees(6, 5)));
			System.out.print("placement "+echiquier.getJoueurCourant().toString()+" pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(5, 7)).getPiece(), echiquier.getPlateau().get(new Coordonnees(5, 6)));
			System.out.print("placement "+echiquier.getJoueurCourant().toString()+" pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(6, 5)).getPiece(), echiquier.getPlateau().get(new Coordonnees(6, 6)));
			System.out.print("placement "+echiquier.getJoueurCourant().toString()+" pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(8, 6)).getPiece(), echiquier.getPlateau().get(new Coordonnees(8, 5)));
			System.out.print("placement "+echiquier.getJoueurCourant().toString()+" pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(6, 6)).getPiece(), echiquier.getPlateau().get(new Coordonnees(7, 7)));
			System.out.print("placement "+echiquier.getJoueurCourant().toString()+" pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(7, 8)).getPiece(), echiquier.getPlateau().get(new Coordonnees(8, 6)));
			System.out.print("placement "+echiquier.getJoueurCourant().toString()+" pour test >> ");echiquier.deplace(echiquier.getPlateau().get(new Coordonnees(7, 7)).getPiece(), echiquier.getPlateau().get(new Coordonnees(7, 8)));
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.");
		}		
		
		System.out.println("\ttest : <TENTATIVE MUTATION - OK ?>");
		try{
			((Pion)echiquier.getPieceCase(new Coordonnees(7, 8))).mute(PieceType.Reine);
			System.out.println("\t :: <SUCCESS>");
		}catch (Exception e){
			System.out.println("\t\tERREUR : Exception retourné.  -->   TEST VERIFIE");
		}
		
		
			System.out.println(echiquier.getPieceDeplacable());

		System.out.println(echiquier.getJeuAdverse());
		System.out.println(echiquier.getJeuCourant());
	}

}
